<?php 

/**
 * 商品管理控制器
 * @author 阿柱 <422852954@qq.com>
 */
class GoodsController extends AuthController{
	private $model;
	public function __init(){
		parent::__init();
		$this->model=K('Goods');
	}
    /**
     *   **列表展示方法
     */
    public function index(){
//  	分页
    	$count=$this->model->count();
		$pageObj=new Page($count,10,5);
		$this->assign('page',$pageObj->show());
		$goodsData=$this->model->limit($pageObj->limit())->all();
//		总库存
		foreach ($goodsData as $k=> $v) {
//			如果用户添加货品
			if(K('GoodsList')->where("gid={$v['gid']}")->find('inventory')){
				$goodsData[$k]['gsum']=K('GoodsList')->where("gid={$v['gid']}")->sum('inventory');
			}
		}
		$this->assign('goodsData',$goodsData);
        $this->display(); 
    }
	/**
	 * 添加商品
	 */
	public function add(){
		if(IS_POST){
			$upload=new Upload('Static/Goods');
			$uplofiles=$upload->upload();
//			判断两张图片是否都上传
			if(count($uplofiles)!=2)    $this->error('请上传图片');
//			将两张图片传入进去----接收gid 转入添加货品列表页面
			$gid=$this->model->addGoods($uplofiles[0]['path'],$uplofiles[1]['path']);
			if(!$gid)   $this->error($this->model->error);
			$this->success('添加成功',U('GoodsList/index',array('gid'=>$gid)));
		}
//		分配品牌和分类数据
		$this->brandCate();		
	    $this->display();
	}
	/**
	 * 编辑商品
	 */
	public function edit(){
		if(IS_POST){
			$gid=Q('post.gid',0,'intval');
//			p($gid);die;
			$data=M()->join('__goods__  g JOIN __goods_details__  gd ON g.gid=gd.gid')->where("g.gid={$gid}")->find();
			$picLoad = new upload('Static/Goods');
//			判断列表图是否上传	-----不上传就是一个空数组
			$upPic =$picLoad->upload('pic');
			if($upPic){
				unlink($data['pic']);
				$data['pic']=$upPic[0]['path'];
			}
			$bigLoad = new upload('Static/Goods');
//			判断大图是否上传
			$upBig =$bigLoad->upload('big');
			if($upBig){
				unlink($data['big']);
				unlink($data['small']);
				$data['big']=$upBig[0]['path'];
			} 
			$gid=$this->model->editGoods($data['pic'],$data['big']);
			if(!$gid)   $this->error($this->model->error);
//			因为编辑商品完之后货品列表的东西也会变,所以要把货品列表里面的内容删除,再重新添加货物
			K('GoodsList')->where("gid={$gid}")->del();
			$this->success('修改成功',U('GoodsList/index',array('gid'=>$gid)));
		}
		
		$gid=Q('get.gid',0,'intval');
		$oldGoods=M()->join('__goods__  g JOIN __goods_details__  gd ON g.gid=gd.gid')->where("g.gid={$gid}")->find();
//		分配商品变量*************************************
		$this->assign('oldGoods',$oldGoods);
//		分配商品属性变量*********************************
		$oldAttr=K('GoodsAttr')->where("gid={$gid}")->all();
		$this->assign('oldAttr',$oldAttr);
//		分配品牌和分类数据******************************
		$this->brandCate();
//		分配所属分类对应的类型(type_attr)****************
		$tid=$oldGoods['tid'];
//		1.分配属性变量(atype=0 AND tid={$tid})
		$attr=K('TypeAttr')->where("atype=0 AND tid={$tid}")->all();
		$this->assign('attr',$attr);
//		2.规格(atype=1 AND tid={$tid})
		$spec=M()->join('__goods_attr__ ga JOIN __type_attr__ ta ON ga.taid=ta.taid')->where("ta.atype=1 AND ta.tid={$tid} AND ga.gid={$gid}")->all();
		$this->assign('spec',$spec);
		$this->display();
	}
	/**
	 * 	删除商品
	 */
	public function del(){
		$gid=Q('get.gid',0,'intval');
//		1.商品表*************************
//		删除图片
		$path=$this->model->where("gid={$gid}")->getField('pic');
		unlink($path);
//		删除数据
		$this->model->where("gid={$gid}")->del();
//		2.商品详细表*********************
		$details=K('GoodsDetails');
		$path=$details->where("gid={$gid}")->find();
//		删除大图和小图
		unlink($path['big']);   unlink($path['small']);
		$details->where("gid={$gid}")->del();
//		3.商品属性表*********************
		$attr=K('GoodsAttr');
		$attr->where("gid={$gid}")->del();
//		4.货品列表
		$goodsList=K('GoodsList');
		$goodsList->where("gid={$gid}")->del();
		
		$this->success('删除成功','',1);
	}
	
	/**
	 * 循环品牌和分类
	 */
	private function brandCate(){
//		分配品牌数据
		$brandData=K('Brand')->all();
		$this->assign('brandData',$brandData);
//		p($brandData);
//		分配分类数据(树状结构)
		$cateData=Data::tree(K('Category')->all(),'cname');
		$this->assign('cateData',$cateData);
//		p($cateData);
	}
	/**
	 * 获得type_attr中的属性值
	 */
	public function getAttr(){
//		如果不是AJAX请求
		if(!IS_AJAX)    return;
		$tid=Q('post.tid',0,'intval');
		$attrData=K('TypeAttr')->where("tid={$tid}")->all();
//		给它赋值一个tid是为了如果用户选了其他的分类再重新选择该分类的时候属性和规格还是重新选中的状态
		$attrData['cid']=Q('post.cid',0,'intval');

		$this->ajax($attrData);
		
	}
	
	
}
 




 ?>